<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8" />
  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>面向对象封装消息提示</title>
  <style>
    .modal {
      width: 300px;
      min-height: 100px;
      box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
      border-radius: 4px;
      position: fixed;
      z-index: 999;
      left: 50%;
      top: 50%;
      transform: translate3d(-50%, -50%, 0);
      background-color: #fff;
    }

    .modal .header {
      line-height: 40px;
      padding: 0 10px;
      position: relative;
      font-size: 20px;
    }

    .modal .header i {
      font-style: normal;
      color: #999;
      position: absolute;
      right: 15px;
      top: -2px;
      cursor: pointer;
    }

    .modal .body {
      text-align: center;
      padding: 10px;
    }

    .modal .footer {
      display: flex;
      justify-content: flex-end;
      padding: 10px;
    }

    .modal .footer a {
      padding: 3px 8px;
      background: #ccc;
      text-decoration: none;
      color: #fff;
      border-radius: 2px;
      margin-right: 10px;
      font-size: 14px;
    }

    .modal .footer a.submit {
      background-color: #369;
    }
  </style>
</head>

<body>
  <button id="delete">删除</button>
  <button id="login">登录</button>

  <!-- <div class="modal">
    <div class="header">温馨提示 <i>x</i></div>
    <div class="body">您没有删除权限操作</div>
  </div> -->

  <!-- 难理解 不算很会 -->
  <script>
    //因为要面向对象消息提示 所以需要构造函数
    // 1.Modal 构造函数封装 模态框
    function Modal(title = '', message = '') {
      // 创建model 模态框盒子
      // 1.1 创建div标签
      this.ModalBox = document.createElement('div')
      // 1.2给div标签添加类名
      this.ModalBox.classList = 'modal'
      // 1.3 modal内部填充2个div标签并且修改文字内容
      this.ModalBox.innerHTML = `
          <div class="header">${title} <i>x</i></div>
    <div class="body">${message}</div>`
      // console.log(this.ModalBox);
    }
    new Modal('温馨提示', '你没权限')

    // 2.给构造函数原型对象挂在open 方法
    Modal.prototype.open = function () {
      // 先判断页面中是否有modal盒子，如果有先删除，否则继续添加
      const box = document.querySelector('.modal')
      box && box.remove()  //如果有盒子存在 则右边执行  如果盒子不存在 则右边不执行

      // 把刚才创建的modelBox显示到页面body中
      document.body.append(this.ModalBox)//this指向实例对象

      // 等着盒子显示出来，就可以绑定点击事件了 盒子的x 所以这么写
      this.ModalBox.querySelector('i').addEventListener('click', () => {
        // 这里需要用到箭头函数 因为箭头函数里面没有this
        // 因为this 指向实例对象
        this.close()
      })
    }

    Modal.prototype.close = function () {
      this.ModalBox.remove()
    }
    // 点击删除按钮
    document.querySelector('#delete').addEventListener('click', () => {
      const del = new Modal('温馨提示', '你没有权限删除')
      del.open()
    })
    document.querySelector('#login').addEventListener('click', () => {
      const login = new Modal('友情提示', '你没有注册呢')
      login.open()
    })
  </script>
</body>

</html>